import request from '@/utils/request'
import Cookies from 'js-cookie'

/**
 * 从Cookie中获取校区ID
 */
function getCampusIdFromCookie() {
  try {
    // 获取存储在cookie中的用户信息
    const userStr = Cookies.get('user')
    
    if (userStr) {
      // 解析JSON
      const user = JSON.parse(userStr)
      // 返回校区ID
      return user.campusId || null
    }
  } catch (error) {
    console.warn('从Cookie获取校区ID失败:', error)
  }
  return null // 没有校区ID，表示是超级管理员
}

/**
 * 从Cookie中获取用户信息
 */
function getUserFromCookie() {
  try {
    const userStr = Cookies.get('user')
    if (userStr) {
      return JSON.parse(userStr)
    }
  } catch (error) {
    console.warn('从Cookie获取用户信息失败:', error)
  }
  return null
}

// 获取首页数据（支持按校区筛选）
export function getHomeData(campusId) {
  // 如果没有传递campusId，从cookie中获取
  const finalCampusId = campusId !== undefined ? campusId : getCampusIdFromCookie()
  
  return request({
    url: '/home/management/data',
    method: 'get',
    params: finalCampusId ? { campusId: finalCampusId } : {}
  })
}

// 获取校区列表
export function getCampusList() {
  return request({
    url: '/campus/campusInfo/list',
    method: 'get'
  })
}

// 根据校区查询轮播图
export function getBannersByCampus(campusId) {
  // 如果没有传递campusId，从cookie中获取
  const finalCampusId = campusId !== undefined ? campusId : getCampusIdFromCookie()
  
  return request({
    url: '/home/management/banners',
    method: 'get',
    params: finalCampusId ? { campusId: finalCampusId } : {}
  })
}

// 根据校区查询商品
export function getGoodsByCampus(campusId) {
  // 如果没有传递campusId，从cookie中获取
  const finalCampusId = campusId !== undefined ? campusId : getCampusIdFromCookie()
  
  return request({
    url: '/home/management/goods',
    method: 'get',
    params: finalCampusId ? { campusId: finalCampusId } : {}
  })
}

// 获取当前校区ID（异步版本，方便在组件中使用）
export async function getCurrentCampusId() {
  return getCampusIdFromCookie()
}

// 获取当前校区名称
export async function getCurrentCampusName() {
  const campusId = getCampusIdFromCookie()
  if (!campusId) {
    return '超级管理员'
  }
  
  try {
    // 获取校区列表，找到对应的校区名称
    const response = await getCampusList()
    const campusList = response.rows || response.data || []
    
    // 尝试不同的字段名匹配
    const campus = campusList.find(c => 
      c.campusId === campusId || 
      c.id === campusId || 
      String(c.campusId) === String(campusId) ||
      String(c.id) === String(campusId)
    )
    
    return campus ? (campus.campusName || campus.name || '未知校区') : '未知校区'
  } catch (error) {
    console.error('获取校区名称失败:', error)
    return '获取失败'
  }
}

// 导出工具函数供其他地方使用
export { getCampusIdFromCookie, getUserFromCookie } 

/**
 * 通用函数：为查询参数自动添加校区ID
 * @param {Object} query - 原始查询参数
 * @param {number|string} campusId - 可选的校区ID，如果不传则自动从cookie获取
 * @returns {Object} 包含校区ID的查询参数
 */
export function addCampusIdToQuery(query = {}, campusId) {
  const finalCampusId = campusId !== undefined ? campusId : getCampusIdFromCookie()
  return {
    ...query,
    ...(finalCampusId ? { campusId: finalCampusId } : {})
  }
} 